-*- org -*-

* Goals

  + minimal
    - make the C core as small as possible
    - implement as many things as possible in Scheme as a library
  + extensible
    - provide enough primitives to implement custom procedure and syntax
  + bootstrappable
    - bootstrappable from C using any C11 compiler
  + embeddable
    - can be copied verbatimly to your C source file and be used
    - no external depedencies

* Non-Goals

  + performant
    - should be performant enough to run examples though
  + Scheme Report conformant
  + multithread support
  + undelimited continuation support
  + numerical tower support
    - because we want Scheme integer to be implement as C integer

* Maybe-Goals

  + macro support
    - hygenic
    - syntax-rules
    - which low-level macro system(s) should be supported? (maybe none?)
    - any tutorial?
    - should expander be implemented in Scheme?
  + define-record-type support
    - would be useful to implement numerical tower
  + delimited continuation support
    - would have to rewrite the interpreter if we were to implement it later
    - any tutorial?
  + ffi support
    - what should the interface look like?
    - portability concerns

* Plans

** TODO prototype interpreter in haskell

*** DONE write a working interpreter

*** TODO remove the use of parsec

** TODO add a scheme library

*** TODO make it work

*** TODO

** TODO translate haskell prototype to C

*** TODO use trampoline to implement tail recursion
